package org.jetlinks.pro.assets;

import org.hswebframework.web.authorization.Authentication;
import org.reactivestreams.Publisher;
import reactor.core.publisher.Flux;
import reactor.core.publisher.Mono;

/**
 * 资产持有者提供商,用于根据用户权限信息来创建资产持有者信息.
 * <p>
 * 可以通过实现此接口来自定义数据权限控制
 *
 * @author zhouhao
 * @see AssetsHolder
 * @since 1.11
 */
public interface AssetsHolderProvider {

    /**
     * 根据权限信息创建资产持有信息
     *
     * @param authentication 权限信息
     * @return 资产持有信息
     */
    Publisher<? extends AssetsHolder> createHolder(Authentication authentication);

}
